/*    */ package com.gillion.grule.client.validator;
/*    */ 
/*    */ import java.util.Map;
/*    */ import org.apache.commons.lang3.Validate;
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ public class LengthValidatorServiceImpl
/*    */   implements ValidatorService
/*    */ {
/*    */   public boolean validate(String key, Object value, Map<String, Object> settings) {
/* 19 */     Validate.notNull(settings, "settings不能为空！", new Object[0]);
/* 20 */     Validate.isTrue((settings.containsKey("maxLength") || settings.containsKey("minLength")), "在范围校验中，必须至少配置最大值或最小值中的一个", new Object[0]);
/*    */     
/* 22 */     Validate.notEmpty(key, "在范围校验中，key值不能为空", new Object[0]);
/*    */     
/* 24 */     Validate.notNull(key, "校验的值不能为空，请检查！", new Object[0]);
/* 25 */     if (value != null) {
/* 26 */       Validate.isTrue(value instanceof String, "值类型不为字符串", new Object[0]);
/*    */     }
/*    */     
/* 29 */     int length = (value == null) ? 0 : value.toString().length();
/* 30 */     boolean isByte = ((Boolean)settings.get("isByte")).booleanValue();
/* 31 */     if (isByte) {
/* 32 */       length = (value == null) ? 0 : (value.toString().getBytes()).length;
/*    */     }
/* 34 */     if (settings.containsKey("maxLength")) {
/* 35 */       int max = Integer.valueOf(settings.get("maxLength").toString()).intValue();
/* 36 */       if (length > max) {
/* 37 */         return false;
/*    */       }
/*    */     } 
/* 40 */     if (settings.containsKey("minLength")) {
/* 41 */       int min = Integer.valueOf(settings.get("minLength").toString()).intValue();
/* 42 */       if (length < min) {
/* 43 */         return false;
/*    */       }
/*    */     } 
/*    */     
/* 47 */     return true;
/*    */   }
/*    */ }
